]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
messageTray: Defer creation of mainIcon
authorJasper St. Pierre <jstpierre@mecheye.net>
Thu, 16 Aug 2012 19:50:35 +0000 (15:50 -0400)
committerJasper St. Pierre <jstpierre@mecheye.net>
Fri, 17 Aug 2012 00:10:24 +0000 (20:10 -0400)
We need to make sure the Source is fully constructed before creating
mainIcon, as SourceActor will query the count of the source.

This fixes Telepathy Chats.

https://bugzilla.gnome.org/show_bug.cgi?id=682045

js/ui/messageTray.js

index eabf6a7d538e51e14a2401ef1fac331fffa0d346..2a736b68b47daa4723d28f350c0b0496ecb27b19 100644 (file)
@@ -1132,9 +1132,6 @@ const Source = new Lang.Class({
         this.isMuted = false;
 
         this.notifications = [];
-
-        this.mainIcon = new SourceActor(this, this.ICON_SIZE);
-        this._setSummaryIcon(this.createIcon(this.ICON_SIZE));
     },
 
     get count() {
@@ -1178,10 +1175,23 @@ const Source = new Lang.Class({
                              icon_size: size });
     },
 
+    _ensureMainIcon: function(icon) {
+        if (this._mainIcon)
+            return false;
+
+        if (!icon)
+            icon = this.createIcon(this.ICON_SIZE);
+
+        this._mainIcon = new SourceActor(this, this.ICON_SIZE);
+        this._mainIcon.setIcon(icon);
+        return true;
+    },
+
     // Unlike createIcon, this always returns the same actor;
     // there is only one summary icon actor for a Source.
     getSummaryIcon: function() {
-        return this.mainIcon.actor;
+        this._ensureMainIcon();
+        return this._mainIcon.actor;
     },
 
     pushNotification: function(notification) {
@@ -1228,7 +1238,8 @@ const Source = new Lang.Class({
 
     //// Protected methods ////
     _setSummaryIcon: function(icon) {
-        this.mainIcon.setIcon(icon);
+        if (!this._ensureMainIcon(icon))
+            this._mainIcon.setIcon(icon);
     },
 
     open: function(notification) {